// 视频播放器配置
export const videoConfig = {
  // 重连配置
  reconnect: {
    maxReconnectAttempts: 3, // 最大重连次数
    baseDelay: 1000, // 基础重连延迟（毫秒）
    maxDelay: 10000, // 最大重连延迟（毫秒）
    frameCheckInterval: 3000, // 帧数检查间隔（毫秒）
    consecutiveFrameStallsThreshold: 2, // 连续帧数停滞阈值
  },
  
  // 播放器配置
  player: {
    enableWorker: false,
    enableStashBuffer: false,
    reuseRedirectedURL: true,
    autoCleanupSourceBuffer: true,
    lazyLoad: false,
    seekType: 'range',
    rangeLoadZeroStart: true,
    customSeekHandler: null,
    fixAudioTimestampGap: false,
    accurateSeek: false,
    seekHoleNudgeDuration: 0.1,
    maxBufferSize: 0,
    maxBufferLength: 30,
    maxMaxBufferLength: 600,
    maxBufferHole: 0.5,
    highBufferWatchdogPeriod: 2,
    nudgeOffset: 0.1,
    nudgeMaxRetry: 5,
    maxFragLookUpTolerance: 0.25,
    liveSyncDurationCount: 3,
    liveMaxLatencyDurationCount: 10,
    liveDurationInfinity: true,
    liveBackBufferLength: 90,
    maxLiveSyncPlaybackRate: 1,
    enableSoftwareAES: false,
    enableDateRangeMetadataCues: false,
    enableEmsgMetadataCues: false,
    enableID3MetadataCues: false,
    enableWebVTT: true,
    enableIMSC1: true,
    enableCEA708Captions: true,
    stretchShortVideoTrack: false,
    maxAudioFramesDrift: 1,
    maxVideoFramesDrift: 1,
    maxBufferSize: 60 * 1000 * 1000, // 60MB
    lowLatencyMode: true,
  },
  
  // 性能监控配置
  performance: {
    enableMonitoring: true, // 是否启用性能监控
    monitorInterval: 5000, // 监控间隔（毫秒）
    maxStatsRecords: 100, // 最大统计记录数
    memoryWarningThreshold: 0.8, // 内存警告阈值（80%）
    reconnectWarningThreshold: 5, // 重连警告阈值（每个播放器5次）
  },
  
  // 网络配置
  network: {
    enableNetworkMonitoring: true, // 是否启用网络监控
    connectionTimeout: 10000, // 连接超时时间（毫秒）
    requestTimeout: 15000, // 请求超时时间（毫秒）
  },
  
  // 调试配置
  debug: {
    enableLogging: true, // 是否启用日志
    logLevel: 'warn', // 日志级别：'debug', 'info', 'warn', 'error'
    enablePerformanceLogging: false, // 是否启用性能日志
  }
}

// 根据环境调整配置
export function getOptimizedConfig() {
  const config = { ...videoConfig }
  
  // 生产环境优化
  if (process.env.NODE_ENV === 'production') {
    config.debug.enableLogging = false
    config.debug.enablePerformanceLogging = false
    config.performance.enableMonitoring = false
  }
  
  // 移动设备优化
  if (/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
    config.player.maxBufferSize = 30 * 1000 * 1000 // 30MB
    config.player.maxBufferLength = 15
    config.reconnect.maxReconnectAttempts = 2
    config.reconnect.baseDelay = 2000
  }
  
  // 低端设备优化
  if (navigator.hardwareConcurrency && navigator.hardwareConcurrency <= 4) {
    config.player.enableWorker = false
    config.player.lowLatencyMode = false
    config.performance.monitorInterval = 10000
  }
  
  return config
}

export default videoConfig 